﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sistema.NFe.Xml.Interfaces;
using System.Xml;

namespace Sistema.NFe.Xml.Versao200
{
    class XmlRetornoConsRecibo200 : Sistema.NFe.Xml.Interfaces.IXmlRetornoConsRecibo
    {

        String _xml;
        Int32 _status;
        String _DescricaoStatus;
        IList<IXmlProtocolo> _protocolos;

        public XmlRetornoConsRecibo200()
        {
            this._xml = String.Empty;
            this._status = 0;
            this._DescricaoStatus = String.Empty;
            this._protocolos = new List<IXmlProtocolo>();
        }

        #region Propriedades

        public String Xml
        {
            set
            {
                _xml = value;
                CarregaDadosXml();
            }
            get { return _xml; }
        }

        public String DescricaoStatus
        {
            get { return _DescricaoStatus; }
            set { _DescricaoStatus = value; }
        }

        public Int32 Status
        {
            get { return _status; }
            set { _status = value; }
        }

        public IList<IXmlProtocolo> Protocolos
        {
            get { return _protocolos; }
            set { _protocolos = value; }
        }

        #endregion

        private void CarregaDadosXml()
        {
            Mapeamento.TRetConsReciNFe dados = new Util.Serializacao().Deserialize<Mapeamento.TRetConsReciNFe>(_xml);
            Int32.TryParse(dados.cStat, out this._status);
            DescricaoStatus = dados.xMotivo;

            foreach (var item in dados.protNFe)
            {
                _protocolos.Add(new XmlProtocolo200(item));
            }
        }






    }
}
